/**
 * Object.getOwnPropertyDescriptor(obj, prop)方法返回指定对象上一个自有属性对应的属性描述符。（自有属性指的是直接赋予该对象的属性，不需要从原型链上进行查找的属性）
 * 参数obj：在该对象上查看属性
 * 参数prop：一个属性的名称，该属性的属性描述符将被返回
 * 返回值：如果指定的属性存在于对象上，则返回属性描述符，否则返回undefined
 **/

//实例一
var o = {}
Object.defineProperties(o, {
    'age' : {
        value       : 21,
        writable    : true,
        configurable: true,
        enumerable  : true
    },
    'name': {
        value       : '张三',
        writable    : true,  //表示对象属性值(name)可以被修改
        configurable: true,//表示对象属性可以被删除或修改
        enumerable  : true//表示对象可枚举
    }
});
var obj = Object.getOwnPropertyDescriptor(o, 'name')
console.log(obj);

//实例二
function person() {
}
person.prototype.name = '张三'; //原型属性
person.prototype.age = 24;//原型属性
person.prototype.run = function () {  //原型方法
    return this.name + "," + this.age + '运行中...'
}

var box = new person();
console.log(Object.getOwnPropertyDescriptor(box));//undefined   因为实例对象没有属性